package bd;

/*
 * Esse arquivo é parte do Software new Recicle
 * 
 * Copyright (C) 2011-$AnoCorrente$ Eduardo Moreira Barbosa
 * Copyright (C) 2011-$AnoCorrente$ João dos Santos Gonçalves
 * Copyright (C) 2011-$AnoCorrente$ Lucas Ximenes da Fonseca
 * 
 * new Recicle é um Software Livre: Você pode redistribuí-lo e/ou modificá-lo
 * de acordo com os termos da Licença Pública Geral GNU (GNU General Public License)
 * conforme publicada pela Free Software Foundation (FSF). Essa permissão é atribuída
 * na versão 3 da Licença, ou (na sua opinião) qualquer versão.
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa,
 * se não, escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 * 
 * Se você tiver alguma dúvida e/ou quiser dar suporte ao desenvolvimento, favor entrar em
 * contato nos e-mails <barbosa.edrd@gmail.com>, <john.jsg@hotmail.com>, <lxf.lucas@gmail.com>.
 */

import java.sql.SQLException;
import java.util.Vector;
import outros.Data;
import outros.Pdf;
import produto.Produto;
import rh.Associado;

public class BancoProducao {
    
    private String comando;
    private String pesquisa;
    private String Id = "";   
    
    private Vector<String> Comparacao1 = new Vector();    
    private Vector<String> Comparacao2 = new Vector();    
    Vector<String> AssociadoPesar = new Vector();    
    Vector<String> Tipo = new Vector();
    Vector<Float> Peso = new Vector();    
    Vector<String> FormaArmazenamento = new Vector();
    Vector<String> DataAtual = new Vector();
    

    /**
     * Cadastro da Produção
     * 
     * @exception       Exceção SQL
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    public void pesar(){
        
        comando = "Insert into Ervilha.Producao (Data, Associado, Tipo, " +
                                     "Peso, FormaArmazenamento)" + 
                                     "Values ('" + Data.GerarData() + "'" +
                                     ",'" + Associado.getAssociado().getNome() + "'" +
                                     ",'" + Produto.getProduto().getTipo()+ "'" +
                                     ",'" + Produto.getProduto().getPeso() + "'" +
                                     ",'" + Produto.getProduto().getFormaArmazenamento() + "')";
        
        try{            
            BancoDeDados.STATEMENT = BancoDeDados.CONNECTION.createStatement();
            try{                        
                BancoDeDados.STATEMENT.executeUpdate(comando);                                          
            } catch (SQLException sQLException){
                    sQLException.printStackTrace();
                }
            } catch (SQLException sQLException) {
                sQLException.printStackTrace();
            }
    }

    /**
     * Pesquisar no Banco de Dados
     * 
     * @param comparar  Produção a ser pesquisada no Banco de Dados
     * @return          Produção se existir no Banco de Dados ou null se não existir
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarBanco(String comparar){
        String sql = "Select * from Ervilha.Producao";
        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String data = BancoDeDados.RESULTSET.getString("Data");
               String associado = BancoDeDados.RESULTSET.getString("Associado");
               String tipo = BancoDeDados.RESULTSET.getString("Tipo");
               float peso = BancoDeDados.RESULTSET.getFloat("Peso");
               String formaArmazenamento = BancoDeDados.RESULTSET.getString("FormaArmazenamento");
               
               
               pesquisa = data + "#" + associado + "#" + tipo + "#" + peso + "#" + formaArmazenamento;
               
               if (data.equals(comparar)){
                 DataAtual.add(data);
                 AssociadoPesar.add(associado);
                 Tipo.add(tipo);
                 Peso.add(peso);
                 FormaArmazenamento.add(formaArmazenamento);
               }
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }

    /**
     * Retornar Pesquisa no Banco de Dados
     * 
     * @see             Método pesquisarBanco
     * @return          Todos os dados de uma Produção
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String retornarBanco(){
        return pesquisa;
    }

    /**
     * Pesquisar a Produção
     * 
     * @return          null se não existir Produção no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarId(){
        String sql = "Select * from Ervilha.Producao";        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String nome = BancoDeDados.RESULTSET.getString("Data");               
               Id += nome + "#";               
               String[] s = Id.split("#");      
               Comparacao1.add(nome);
               
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }
    
    /**
     * Retornar a Produção
     * 
     * @see             Método pesquisarId
     * @return          Toda a Produção
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String[] retornarId(){
        String[] nomes;
        nomes = Id.split("#");
        return nomes;
    }
    
    /**
     * Retornar a Data da Produção
     * 
     * @return          Todas as Datas sem repetições
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String[] retornarData(){
        String a = Comparacao1.get(0);
        Comparacao2.add(a);
        
        for (int i = 0; i < Comparacao1.size(); i++) {            
            if (!a.equals(Comparacao1.get(i))){
                Comparacao2.add(Comparacao1.get(i));
                a = Comparacao1.get(i);
            }            
        }

        String nomes = "";
        for (int k = 0; k < Comparacao2.size(); k++){
            nomes += Comparacao2.get(k) + "#";
            
        }
        return nomes.split("#");
    }
    
    /**
     * Gerar Relatório
     *
     * @see             Classe Pdf
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void gerarGelatorio() {
        Pdf pdf = new Pdf();
        pdf.gerarRelatorio(AssociadoPesar, Tipo, Peso, FormaArmazenamento, DataAtual);
        
    }
    

}
